 #//include <stdio.h>
 #//include <sys/types.h>
 #//include <unistd.h>
 
//int main()
// {
//    while(1){
//        sleep(1);
//    }
//    return 0;
// }
//#include <stdio.h>
// #include <sys/types.h>
// #include <unistd.h>
// 
//int main()
// {
//    printf("pid: %d\n", getpid());
//    printf("ppid: %d\n", getppid());
//    while(1);
//    return 0;
// }

//#include <stdio.h>
// #include <sys/types.h>
// #include <unistd.h>
// 
//int main()
// {
//    int ret = fork();
//    if(ret < 0){
//        perror("fork");
//        return 1;
//    }
//    else if(ret == 0){ //child
//        printf("I am child : %d!, ret: %d\n", getpid(), ret);
//    }else{ //father
//        printf("I am father : %d!, ret: %d\n", getpid(), ret);
//    }
//    sleep(1);
//    return 0;
// }
// ////////////////////
 //创建位置三十秒的僵尸进程例子：
//#include <stdio.h>
//#include <stdlib.h>
//#include <sys/types.h>
//#include <unistd.h>
//
//int main()
// {
//    pid_t id = fork();
//    if(id < 0)
//    {
//        perror("fork");
//        return 1;
//    }
//     else if(id > 0)
//     { //parent
//        printf("parent[%d] is sleeping...\n", getpid());
//        sleep(30);
//     }
//    else
//     {
//        printf("child[%d] is begin Z...\n", getpid());
//        sleep(5);
//        exit(EXIT_SUCCESS);
//     }
//    return 0;
//}
//////////////////
//孤儿进程

#include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 
int main()
 {
    pid_t id = fork();
    if(id < 0){
        perror("fork");
        return 1;
    }
    else if(id == 0){//child
        printf("I am child, pid : %d\n", getpid());
        sleep(10);
    }else{//parent
        printf("I am parent, pid: %d\n", getpid());
        sleep(3);
        exit(0);
    }
    return 0;
 }
